#include "cFichier.h"

cFichier::cFichier(string cheminFichier)
{
    _cheminFichier=cheminFichier;
    //ctor
}

cFichier::~cFichier()
{
    //dtor
}

bool cFichier::writeConfigValue(string segment,string nomValeur,string Valeur)
{
    return WritePrivateProfileString(segment.c_str(),nomValeur.c_str(),Valeur.c_str(),_cheminFichier.c_str());
}

/** \brief
 *
 * \param segment string
 * \param nomValeur string
 * \param ValeurParDefaut string
 * \return string
 *
 */
string cFichier::readConfigValue(string segment,string nomValeur,string ValeurParDefaut)
{
    char retour[32000]={0};
    GetPrivateProfileString(segment.c_str(),nomValeur.c_str(),ValeurParDefaut.c_str(),retour,32000,_cheminFichier.c_str());
    return retour;
}

cOpenFile::cOpenFile()
{
    ZeroMemory( &structure , sizeof( structure));
	structure.lStructSize = sizeof ( structure );
	structure.hwndOwner = NULL  ;
	structure.lpstrInitialDir=NULL ;
	structure.Flags = OFN_PATHMUSTEXIST|OFN_FILEMUSTEXIST ;
}

cOpenFile::cOpenFile(string repertoire)
{
    ZeroMemory( &structure , sizeof( structure));
	structure.lStructSize = sizeof ( structure );
	structure.hwndOwner = NULL  ;
	structure.lpstrInitialDir=repertoire.c_str() ;
	structure.Flags = OFN_PATHMUSTEXIST|OFN_FILEMUSTEXIST ;
}

void cOpenFile::SetTitle(string title)
{
    this->Titre=title;
}

void cOpenFile::AddFilter(string Label, string Filter)
{
    FileFilter filtre;
    filtre.Label=Label;
    filtre.Filter=Filter;
    FilterList.push_back(filtre);
}

vector<FileFilter> cOpenFile::GetFilterList()
{
    return FilterList;
}


void cOpenFile::SetFilters(vector<FileFilter> filters)
{
    FilterList=filters;
}

string cOpenFile::OpenDialog()
{
    char szFile[64000];
    structure.lpstrFile = szFile ;
	structure.lpstrFile[0] = '\0';
	structure.nMaxFile = sizeof( szFile );

	int longueur=0;
    for(int i=0;i<FilterList.size();i++)
    {
        longueur+=FilterList[i].Label.length()+1+FilterList[i].Filter.length();
    }

    char * filtres=new char[longueur];
    char * titre=NULL;
    int indice=0;
    for(int i=0;i<FilterList.size();i++)
    {
        for(int a=0;a<FilterList[i].Label.length();a++)
        {
            filtres[indice]=FilterList[i].Label[a];
            indice++;
        }
        filtres[indice]='\0';
        indice++;
        for(int a=0;a<FilterList[i].Filter.length();a++)
        {
            filtres[indice]=FilterList[i].Filter[a];
            indice++;
        }
        filtres[indice]='\0';
        indice++;
    }
    if(this->Titre!="")
    {
        titre=new char[this->Titre.length()];
        strcpy(titre,this->Titre.c_str());
        structure.lpstrTitle = titre ;
    }
    structure.lpstrFilter = filtres;
	structure.nFilterIndex =1;

	GetOpenFileName(&structure);

    delete[]titre;
	delete[]filtres;

	return szFile;
}


